2.20 Funktionen
 
Bisher wurden schon eine Reihe von internen Funktionen verwendet, nun soll erklärt werden, wie man eigene Funktionen schreibt. Der Hintergrund von Funktionen ist ähnlich wie der von Prozeduren: Es werden Codezeilen ausgelagert, die von mehreren Stellen aufgerufen werden können. In der Regel werden Prozeduren verwendet, um bestimmte Aktionen durchzuführen, während Funktionen normalerweise einen Wert zurückgeben. Allerdings sind die Grenzen fließend - man könnte es auch anders machen. Ich halte diese Trennung allerdings für sinnvoll und beschreibe sie auch so. Dabei gibt es verschiedene Möglichkeiten.
Zum einen sind dies Funktionen, die eine Konstante zurückgeben. In der Klasse System.Math stellt VB.NET die beiden Konstanten E und PI zur Verfügung. Als benutzerdefinierte Funktionen sind sie einfach zu erstellen, wie beispielsweise folgende, die aus JavaScript bekannt sind.
Function WURZEL2() As Double
Return System.Math.Sqrt(2)
End Function
Oder auch folgende Konstante, mit welcher der goldene Schnitt berechnet werden kann:
Function GOLDENERSCHNITT() As Double
Return = 0.5 * System.Math.Sqrt (5) + 0.5
End Function
Gerade im Bereich der Naturwissenschaften lässt sich eine Vielzahl von Konstanten finden, die als benutzerdefinierte Funktionen gespeichert werden können. Diese einfachen Beispiele zeigen bereits den Grundaufbau einer Funktion. Eine Funktion gibt einen Wert zurück, deshalb findet sich hinter der Klammer der Typ des Rückgabewerts. Was zurückgegeben wird, wird in der Funktion durch ein Return gekennzeichnet.
Daneben gibt es zum anderen Funktionen, die ein Argument verarbeiten. Aus der Klasse System.Math sind folgende Funktionen bekannt:
Tabelle 2.2
Die mathematischen Funktionen
| Funktion
|
Bedeutung
|
Beispiel
|
| Sqrt
|
Wurzel
|
Sqrt(16) liefert 4
|
| Abs
|
der Absolutwert einer Zahl
|
Abs(4) liefert 4
Abs(-4) liefert 4
|
| Ceiling
|
die kleine ganze Zahl, die größer oder gleich der angegebenen Zahl ist
|
Ceiling(1.75) liefert 2
|
| Floor
|
die kleine ganze Zahl, die kleiner oder gleich der angegebenen Zahl ist
|
Ceiling(1.75) liefert 1
|
| Sign
|
gibt das Vorzeichen der Zahl zurück
|
Sign(3.3) liefert 1
Sign(0) liefert 0
Sign(-3.3) liefert -1
|
| Log
|
gibt den Logarithmus einer Zahl zur Basis »e« zurück
|
Log(2) liefert 0,6931
|
| Log10
|
gibt den Logarithmus einer Zahl zur Basis 10 zurück
|
Log10(100) liefert 2
|
| Exp
|
die Exponentialzahl
|
Exp(4) liefert 54,5981
|
Sin
Cos
Tan
Asin
Acos
Atan
Atan2
|
die trigonometrischen Funktionen
|
|
Sinh
Cosh
Tanh
|
die hyperbolischen Funktionen
|
|
Solche Funktionen sind bereits beschrieben worden: die Quersumme oder die Primzahlen. In der obigen Liste fehlen einige Funktionen, da sie zwei Argumente benötigen:
Tabelle 2.3
Die mathematischen Funktionen, die zwei Argumente verarbeiten
| Funktion
|
Bedeutung
|
Beispiel
|
| IEEERemainder
|
gibt den Rest der Division zweier Zahlen zurück
|
IEEERemainder(2, 7) liefert 1
|
| Pow
|
potenziert zwei Zahlen miteinander
|
Pow(4, 2) liefert 16
|
Max
Min
|
gibt die größere oder kleinere Zahl zurück
|
Max(4, 2) liefert 4
Min(4, 2) liefert 2
|
| Round
|
rundet eine Zahl
|
Round(4.2562, 2) liefert 4,26
|
Es lassen sich noch viele Beispiele denken, in denen mehrere Parameter benötigt werden: finanzmathematische Berechnungen (beispielsweise zur Rentenversicherung), Berechnungen aus naturwissenschaftlichen Diskursen oder auch einfache geometrische Berechnungen. So kann beispielsweise aus den drei Seiten eines Dreiecks der Flächeninhalt bestimmt werden oder das Volumen eines Kegelstumpfes aus der Höhe und den beiden Radien:
Function DREIECK_FLÄCHE _
(SeiteA As Double, SeiteB As Double, _
SeiteC As Double) As Double
Dim dblAlPHA As Double
dblAlPHA = System.Math.Acos((SeiteB ^ 2 + _
SeiteC ^ 2 - SeiteA ^ 2) / (2 * SeiteB * SeiteC))
Return 0.5 * SeiteB * SeiteC * System.Math.Sin(dblAlPHA)
End Function
Einige der Funktionen sind überladen, das heißt, sie nehmen einen, zwei oder mehrere Parameter auf. Wie man solche Funktionen konstruiert und was es mit ihnen auf sich hat, wird im übernächsten Kapitel ausführlich beschrieben.
|